package erreAga.dao.toplink;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import erreAga.dao.FuncionarioDao;
import erreAga.eb.Funcionario;

public class FuncionarioDaoToplinkImpl implements FuncionarioDao {

  @Override
  public void deleteFuncionario(Funcionario funcionario) {
    EntityManager manager = DatabaseManagerSingletonToplinkImpl.getInstancia()
        .getManager();
    manager.getTransaction().begin();
    manager.remove(funcionario);
    manager.getTransaction().commit();
  }

  @Override
  public Funcionario getFuncionario(Integer id) {
    EntityManager manager = DatabaseManagerSingletonToplinkImpl.getInstancia()
        .getManager();
    return manager.find(Funcionario.class, id);
  }

  @Override
  public Funcionario saveFuncionario(Funcionario funcionario) {
    EntityManager manager = DatabaseManagerSingletonToplinkImpl.getInstancia()
        .getManager();
    manager.getTransaction().begin();
    manager.persist(funcionario);
    manager.getTransaction().commit();
    return funcionario;
  }

  @SuppressWarnings("unchecked")
  @Override
  public List<Funcionario> searchFuncionario() {
    EntityManager manager = DatabaseManagerSingletonToplinkImpl.getInstancia()
        .getManager();
    Query query = manager.createQuery("select a from Funcionario a");
    List<Funcionario> resultList = (List<Funcionario>) query.getResultList();
    return resultList;
  }


  @SuppressWarnings("unchecked")
  @Override
  public Funcionario searchFuncionarioByNome(String nome) {
    EntityManager manager = DatabaseManagerSingletonToplinkImpl.getInstancia()
        .getManager();
    Query query = manager.createQuery("select f from Funcionario f where f.nome like '"
            + nome+ "'");
    //List<Funcionario> resultList = (List<Funcionario>) query.getResultList();
    //return resultList;
    return (Funcionario) query.getSingleResult();
  }




  @SuppressWarnings("unchecked")
  @Override
  public Funcionario searchFuncionario(String matricula) {
    EntityManager manager = DatabaseManagerSingletonToplinkImpl.getInstancia()
        .getManager();
    Query query = manager
        .createQuery("select f from Funcionario f where f.matricula like '"+ matricula+"'");
    //List<Funcionario> resultList = (List<Funcionario>) query.getResultList();
    return (Funcionario) query.getSingleResult();
  }

}
